use bda;


DROP TABLE IF EXISTS `business_model_folders`;
CREATE TABLE `business_model_folders`  (
  `folder_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件夹ID',
  `organization_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '组织ID',
  `folder_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件夹名称',
  `folder_parent_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '父文件夹ID',
  `business_model_type` int(11) NOT NULL COMMENT '业务模型类型',
  `create_user_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建者ID',
  `create_date` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间',
  `last_modify_user_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后修改者ID',
  `last_modify_date` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '最后修改时间',
  PRIMARY KEY (`folder_id`) USING BTREE,
  UNIQUE INDEX `unique_key`(`organization_id`, `folder_name`, `folder_parent_id`, `business_model_type`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;


INSERT INTO `system_settings` VALUES ('autoPublishToSuperior', '1');

DROP TABLE IF EXISTS `bm_publishes`;
CREATE TABLE `bm_publishes`  (
  `business_model_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务模型ID',
  `organization_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '组织ID',
  `publish_type` int(11) NOT NULL COMMENT '发布类型；0所有组织可订阅，1指定可订阅组织',
  `publish_status` int(11) NOT NULL COMMENT '-1：订阅；0：未发布；1：已发布；2：发布且停止',
  `create_user_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `create_date` datetime(0) NOT NULL,
  `last_modify_user_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `last_modify_date` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`business_model_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;


DROP TABLE IF EXISTS `bmp_destination_organizations`;
CREATE TABLE `bmp_destination_organizations`  (
  `business_model_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务模型ID',
  `destination_organization_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '模型发布目标组织ID',
  PRIMARY KEY (`business_model_id`, `destination_organization_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

alter table business_models add column `folder_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '-1';
alter table business_models add column `source_type` int(11) NOT NULL DEFAULT 0 COMMENT '来源类型；0本组织创建，1从其它组织订阅';
alter table business_models add column `source_business_model_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源业务模型ID，本组织创建为本组织业务模型ID';
alter table business_models add column `source_organization_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源组织，本组织创建为本组织ID';
alter table business_models add column `publish_status` int(11) NOT NULL DEFAULT 0 COMMENT '-1：订阅；0：未发布；1：已发布；2：发布且停止';

UPDATE business_models set source_business_model_id = business_model_id,source_organization_id = organization_id;

delimiter $$ 
drop function if exists get_child_organization_ids$$ 
create function get_child_organization_ids(in_id varchar(36)) returns text 
begin 
 declare ids text default ''; 
 declare tempids text; 
 
 set tempids = in_id; 
 while tempids is not null do 
	If in_id <> tempids then
		set ids = CONCAT_WS(',',ids,tempids); 
	end if;
  select GROUP_CONCAT(organization_id) into tempids from organizations where FIND_IN_SET(organization_parent_id,tempids)>0;  
 end while; 
 return ids; 
end  
$$ 
delimiter ;

DROP TABLE IF EXISTS `report_publishes`;
CREATE TABLE `report_publishes`  (
  `report_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '报表ID',
  `organization_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '组织ID',
  `publish_type` int(11) NOT NULL COMMENT '发布类型；0所有组织可订阅，1指定可订阅组织',
  `publish_status` int(11) NOT NULL COMMENT '-1：订阅；0：未发布；1：已发布；2：发布且停止',
  `create_user_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `create_date` datetime(0) NOT NULL,
  `last_modify_user_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `last_modify_date` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`report_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;


DROP TABLE IF EXISTS `rp_destination_organizations`;
CREATE TABLE `rp_destination_organizations`  (
  `report_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '报表ID',
  `destination_organization_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '模型发布目标组织ID',
  PRIMARY KEY (`report_id`, `destination_organization_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

  
  alter table reports add column `source_type` int(11) NOT NULL DEFAULT 0 COMMENT '来源类型；0本组织创建，1从其它组织订阅';
  alter table reports add column `source_report_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源业务模型ID，本组织创建为本组织业务模型ID';
  alter table reports add column `source_organization_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源组织，本组织创建为本组织ID';
  alter table reports add column `publish_status` int(11) NOT NULL DEFAULT 0 COMMENT '-1：订阅；0：未发布；1：已发布；2：发布且停止';
  
  update reports set source_report_id = report_id,source_organization_id = organization_id;

alter table organizations modify column `tenant_id` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '-1' COMMENT '租户ID';

alter table business_models drop index uk_business_model_name;
ALTER TABLE business_models ADD UNIQUE INDEX uk_business_model_name(`organization_id`, `business_model_name`, `business_model_type`, `folder_id`) USING BTREE;


update `system_versions` set version = '3.5.0.0506' where module_id = 1;
